package com.zhangzeqin.code.util;

import com.alibaba.druid.pool.DruidDataSourceFactory;

import javax.sql.DataSource;
import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.SQLException;
import java.util.Properties;

/**
 * 创建一个工具类,包含一个连接池对象
 * @method 对外提供连接方法和回收方法
 * @author 张泽钦
 */
public class DruidTool {
        //连接池对象
        private static DataSource dataSource=null;
        //使用静态代码块,全局调用一次,避免重复创造连接池
        static{
            //初始化连接池对象
            Properties properties = new Properties();
            InputStream ips= com.zhangzeqin.code.util.DruidTool.class.getClassLoader().getResourceAsStream("druid.properties");
            try {
                properties.load(ips);
            } catch (IOException e) {
                e.printStackTrace();
            }
            try {
                dataSource= DruidDataSourceFactory.createDataSource(properties);
            } catch (Exception e) {
                e.printStackTrace();
            }
        }

        /**
         * 对外提供连接方法
         * @return 连接对象
         */
        public static Connection getConnection() throws SQLException {
            return dataSource.getConnection();
        }

        /**
         * 提供回收连接的方法
         */
        public static void recycleConnection(Connection connection) throws SQLException {
            //连接池的连接，调用close就是回收
            connection.close();
        }
    }


